Non-volatile memory programming

ABSTRACT

Some embodiments include a memory device and a method of programming memory cells of the memory device. One such method can include applying a signal to a line associated with a memory cell, the signal being generated based on digital information. The method can also include, while the signal is applied to the line, determining whether a state of the memory cell is near a target state when the digital information has a first value, and determining whether the state of the memory cell has reached the target state when the digital information has a second value. Other embodiments including additional memory devices and methods are described.

PRIORITY APPLICATION

This application is a continuation of U.S. application Ser. No. 13/072,478, filed Mar. 25, 2011, which is incorporated herein by reference in its entirety.

BACKGROUND

Non-volatile memory devices such as flash memory devices are used in many computers and electronic devices to store data. A flash memory device usually has a programming operation to store data, a read operation to retrieve the stored data, and an erase operation to clear data from the memory.

Conventional programming operations may involve causing the memory cells to be programmed to have certain states and then determining whether those states are within their expected target programmed states. The programming operation may repeat until expected target programmed states are obtained.

In some conventional programming operations, determining the states of the memory cells being programmed can be a challenge.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a memory device, according to an embodiment of the invention.

FIG. 2 shows a partial schematic diagram of a memory device, according to an embodiment of the invention.

FIG. 3 shows a diagram illustrating example values of various signals applied to an access line associated with selected memory cells during a programming operation of the memory device of FIG. 2, according to an embodiment of the invention.

FIG. 4 shows an example of threshold voltage value ranges of corresponding threshold voltages of the memory device of FIG. 2, according to an embodiment of the invention.

FIG. 5 shows graphs illustrating a relationship between values of threshold voltages and a signal shown in FIG. 3 and FIG. 4, according to an embodiment of the invention.

FIG. 6 is a chart showing a relationship among values of some information and signals shown in FIG. 5, according to an embodiment of the invention.

FIG. 7 shows some activities performed by the memory device of FIG. 2 based on the values of information shown in FIG. 5 and FIG. 6 during an example programming of some selected memory cells of the memory device, according to an embodiment of the invention.

FIG. 8 shows a partial schematic diagram of another portion of the memory device of FIG. 2, according to an embodiment of the invention.

FIG. 9 is a graph showing activities of the memory device of FIG. 2 including determining some conditions during selected time intervals in an example programming of selected memory cells of FIG. 8, according to an embodiment of the invention.

FIG. 10 is a graph showing a first example of some signals associated with a first memory cell in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention.

FIG. 11 is a graph showing a second example of some signals associated with the first memory cell in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention.

FIG. 12 is a graph showing a third example of some signals associated with a first memory cell in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention.

FIG. 13 is a graph showing an example of some signals associated with a second memory cell in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention.

FIG. 14 is a graph showing an example of some signals associated with a third memory cell in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention.

FIG. 15 is a graph showing activities of the memory device of FIG. 2 including determining some conditions during selected time intervals in another example programming of selected memory cells of FIG. 8, according to an embodiment of the invention.

FIG. 16 shows a flow diagram for a method of a programming operation in a memory device, according to an embodiment of the invention.

DETAILED DESCRIPTION

FIG. 1 shows a block diagram of a memory device 100, according to an embodiment of the invention. Memory device 100 includes a memory array 102 with memory cells 103 that may be arranged in rows and columns along with access lines 104 and sense lines 105. Memory device 100 can use access lines 104 to access memory cells 103 and sense lines 105 to transfer data with memory cells 103. Row access 107 and column access circuitry 108 respond to an address register 112 to access memory cells 103 based on row address and column address signals on terminals 110, 111, or both. A data input/output circuit 114 transfers data between memory cells 103 and terminals 110. Terminals 110 and 111 may be external terminals of memory device 100 (e.g., terminals exposed outside a chip or semiconductor package that contains memory device 100).

A control circuit 116 controls operations of memory device 100 based on signals present on terminals 110 and 111. A device (e.g., a processor or a memory controller) external to memory device 100 may send different commands (e.g., programming commands and read commands) to memory device 100 using different combinations of signals on terminals 110, 111, or both.

Memory device 100 responds to commands to perform operations such as programming, read, and erase operations. A programming operation may write data from terminals 110 to memory cells 103 (e.g., transfer data from terminals 110 to memory cells 103). The programming operation can generally be called a write operation. A read operation reads data from memory cells 103 to terminals 110 (e.g., transfers data from memory cells 103 to terminals 110). An erase operation erases data (e.g., clears data) from all memory cells 103 or from a portion of memory cells 103.

Memory device 100 may include an error correction unit 118 to check for errors in data read from memory cells 103. Error correction unit 118 may include error correction circuitry to correct errors based on an error correction code (ECC), as is well-known to those of ordinary skill in the art.

Memory device 100 may include a storage unit 120, which may include memory elements such as registers. Storage unit 120 may include a hardware portion, a firmware portion, or both, of memory device 100. Storage unit 120 may also be used to store codes (e.g., software programming instructions).

Memory device 100 can be a flash memory device such as a NAND flash or a NOR flash memory device, or other kinds of memory devices.

Memory device 100 can be a single-level-cell memory device such that memory cells 103 store a single bit of data. For example, memory cells 103 may store either a binary “0” value or a binary “1” value of a single bit of data.

Memory device 100 can be a multi-level-cell (MLC) memory device such that each of memory cells 103 can store multiple bits or portions of bits of data (e.g., a value corresponding to two, three, four, or some other number of bits of data). For example, when each of memory cells 103 corresponds to a 2-bit per cell, each of memory cells 103 may store one of four possible combinations of two binary bits of data (i.e., combination 00, 01, 10, and 11 corresponding to two bits of data). In another example, when each of memory cells 103 corresponds to a 3-bit per cell, each of memory cells 103 may store one of eight possible combinations of three binary bits of data (i.e., one of 000, 001, 010, 011, 100, 101, 110, and 111). In another example, when each of memory cells 103 corresponds to a four-bit per cell, each of memory cells 103 may store one of 16 possible combinations of four binary bits of data (i.e., one of 0000, 0001, 0010, 0011, 1000, and so on, up to 1111).

Single level and MLC memory devices may be combined within the device 100. One of ordinary skill in the art will readily recognize that memory device 100 can include other parts, which are omitted from FIG. 1 to help focus on the various embodiments described herein. Memory device 100 may include one or more of the embodiments described below with reference to FIG. 2 through FIG. 9.

FIG. 2 shows a partial schematic diagram of a memory device 200, according to an embodiment of the invention. Memory device 200 can be associated with memory device 100 of FIG. 1, such as forming a portion of memory array 102 of memory device 100. In FIG. 2, memory device 200 includes memory cells 210, 211, 212, and 213, arranged in rows 240, 241, 242, and 243, and columns 244, 245, 246, and 247. Memory cells in the same column may be connected in a series (sometimes called a string) of memory cells in their respective column, as illustrated in FIG. 2. FIG. 2 shows an example of four rows and four columns with four memory cells in each column. The number of rows, columns, and memory cells may vary.

As shown in FIG. 2, the memory cells in the same row (e.g., row 241) can be coupled to one of access lines 260, 261, 262, and 263. These access lines can correspond to portions of word lines of a memory device, and in at least some instances can form control gates for the memory cells. Memory device 200 uses access lines 260, 261, 262, and 263 to access memory cells 210, 211, 212, and 213 during a read operation to sense (e.g., read) data stored in memory cells 210, 211, 212, and 213, and during a programming operation to store (e.g., program or write) data into memory cells 210, 211, 212, and 213. Memory device 200 uses sense lines 270, 271, 272, and 273 to transfer the data read from memory cells 210, 211, 212, and 213 during a read operation.

Memory device 200 can also include transistors 231 and 232 (responsive to signals SELa and SELb, respectively) to couple the memory cells 210, 211, 212, and 213 in columns 244, 245, 246, and 247 to sense lines 270, 271, 272, and 273, respectively. Sense lines 270, 271, 272, and 273 may correspond to portions of bit lines, data lines, or a combination of these lines, of a memory device. Line 291 may correspond to a portion of a source (e.g., voltage) line of a memory device.

Memory device 200 can include sense amplifiers (SENSE AMP) 280, 281, 282, and 283 associated with their respective sense lines 270, 271, 272, and 273, which can carry signals V_(BL0), V_(BL1), V_(BL2), and V_(BL3), respectively. These sense amplifiers can individually perform a sense operation to respectively sense values of signals V_(BL0), V_(BL1), V_(BL2), and V_(BL3) and provide signals SEN_OUT₁, SEN_OUT₂, SEN_OUT₂, and SEN_OUT₃ indicating sense result information based on the result of the sense operation. The sense operation can be performed during a portion of a programming operation.

Memory device 200 can store data into memory cells 210, 211, 212, and 213 in a programming operation. The data stored in a particular memory cell (e.g., one of memory cells 210, 211, 212, and 213) can be indicated by a state of the memory cell, for example, the threshold voltage value of that particular memory cell, the charge stored by that particular cell, and/or a resistance state of that particular cell. For a multi-level-cell memory device, each memory cell can be programmed to have a respective programmed state to represent each possible combination of multiple bits that can be stored in each memory cell. For example, when each of memory cells 210, 211, 212, and 213 corresponds to a 3-bit per cell, each of memory cells 210, 211, 212, and 213 can be programmed to have a threshold voltage value within one of eight different threshold voltage ranges to represent a value corresponding to one of eight possible combinations of three binary bits of data (i.e., one of 000, 001, 010, 011, 100, 101, 110, and 111).

In the description herein, selected memory cells refer to the memory cells that are selected to store data in a particular programming operation. A selected access line refers to the access line associated with the selected memory cells. Unselected memory cells refer to the memory cells that are not selected to store data in that particular programming operation. Unselected access lines refer to the access lines associated with the unselected memory cells. The values (e.g., values corresponding to a memory address) of the signals on terminals, such as terminals 110 and 111 of FIG. 1, can be used to determine which memory cells are selected for programming in a programming operation.

FIG. 2 shows an example where one or more of memory cells 210, 211, 212, and 213 in row 241 can be selected memory cells during a programming operation and access line 261 can be a selected access line for these memory cells. In this example, memory cells 210, 211, 212, and 213 in rows 240, 242, and 243 are unselected memory cells. Access lines 260, 262, and 263 are unselected access lines.

During a programming operation, memory device 200 may apply a signal Vpass to unselected access lines (e.g., 260, 262, and 263) associated with unselected memory cells. Signal Vpass can have a value such that the unselected memory cells can maintain their states and operate as pass elements (e.g., by conducting current) during a programming operation. As an example, signal Vpass can have a value of approximately ten volts.

During a programming operation, memory device 200 may apply different signals (e.g., voltage signals) V_(PRGM) and V_(RAMP) at different times to the same selected access line (e.g., 261). Memory device 200 applies signal (e.g., voltage signals) V_(PRGM) to a selected access line (e.g., 261) to change the states (e.g., change the threshold voltage value) of selected memory cells associated with the selected access line. While signal V_(PRGM) is applied to the selected access line, memory device 200 may also apply signals (e.g., voltage signals) V_(BL0), V_(BL1), V_(BL2), and V_(BL3) to sense lines 270, 271, 272, and 273, respectively, associated with the selected memory cells. The value of V_(BL0), V_(BL1), V_(BL2), and V_(BL3) can be different among each other, depending on the states (e.g., threshold voltage values) of the selected memory cells at various times during the programming operation. Some or all signals V_(BL0), V_(BL1), V_(BL2), and V_(BL3) can have a value of zero volts (e.g., ground). Applying signals V_(BL0), V_(BL1), V_(BL2), and V_(BL3) with different values based on the states of the selected memory cells during programming may allow memory device 200 to adjust a programming rate (e.g., how fast or slow) at which the selected memory cells are programmed.

Memory device 200 can include a verify operation, which can be a part of the programming operation. During the verify operation memory device 200 applies signal V_(RAMP) to a selected access line to determine (e.g., check) whether selected memory cells are near their respective target states (e.g., near target threshold voltage values) or have reached their respective target states. The state of the memory cell can include a threshold voltage value of the memory cell. While signal V_(RAMP) is applied to the selected access line, sense amplifiers 280, 281, 282, and 283 can perform sense operations to sense the value of corresponding signals V_(BL0), V_(BL1), V_(BL2), and V_(BL3) associated with the selected memory cells. Before the sensing (e.g., at the beginning of the verify operation), selected sense lines 270, 271, 272, and 273 can be charged (e.g., precharged), such that signal V_(BL0), V_(BL1), V_(BL2), and V_(BL3) can have a particular predetermined signal level value (e.g., high). During the sensing, the signal level value may change (e.g., decrease) or may stay at the same signal level value, based on the states of an associated selected memory cell.

The sense result information, provided by signals SEN_OUT₀, SEN_OUT₁, SEN_OUT₂, and SEN_OUT₃, can indicate whether the selected memory cells are near or have reached their respective target states. Based on the sense result information, memory device 200 may perform appropriate activities. The activities can include adjusting (e.g., decreasing) a programming rate and repeat programming any particular selected memory cell if that memory cell is near its target state. The activities can include increasing the programming rate of the memory cell if the memory cell is not near the target state and has not reached the target state. The activities can also include finishing programming (e.g., inhibiting) any particular selected memory cell if that memory cell has reached its target state.

FIG. 3 shows a diagram illustrating example values of signals V_(PGRM1) through V_(PGRM6) and signals V_(RAMP1) through V_(RAMP6) applied to an access line associated with selected memory cells during a programming operation of the memory device 200 of FIG. 2, according to an embodiment of the invention. The same signal V_(RAMP) between two consecutive V_(PGRM) can be used for multiple selected memory cells in the same row to determine whether the selected memory cells are near their respective target states or have reached their respective target states.

Each of signals V_(PGRM1) through V_(PGRM6) in FIG. 3 corresponds to signal V_(PGRM) of FIG. 2. Each of signals V_(RAMP1) through V_(RAMP6) in FIG. 3 corresponds to signal V_(RAMP) of FIG. 2. FIG. 3 shows six signals V_(PGRM1) through V_(PGRM6) and six signals V_(RAMP1) through V_(RAMP6) as an example. The number of these signals during a particular programming operation can vary (e.g., fewer or more than six).

As shown in FIG. 3, each of signals V_(PGRM1) through V_(PGRM6) can include only a single programming pulse. One pulse can have a different amplitude value from that of the next pulse. For example, the amplitude values of signal V_(PGRM1) through V_(PGRM6) can have a range from approximately 15 volts to approximately 20 volts. During a programming operation, one or more of signals V_(PGRM1) through V_(PGRM6) can be applied to a selected access line to program an associated selected memory cell until the selected memory cell reaches its target threshold voltage value. For example, if after signal V_(PGRM1) is applied and a selected memory cell has not reached its target threshold voltage value, then the programming operation can be repeated with signal V_(PGRM2). If after signal V_(PGRM2) is applied and the selected memory cell has not reached its target threshold voltage value, then the programming operation can be repeated with one or more of signals V_(PGRM3) through V_(PGRM6) until the target threshold voltage value is reached.

Each time the programming operation repeats programming a memory cell, the value (amplitude value) of the signal on the selected access line associated with the selected memory can increase. For example, FIG. 3 shows an increase in amplitude value from signal V_(PGRM1) to signal V_(PGRM2), from signal V_(PGRM2) to signal V_(PGRM3), and so on. Alternatively, the amplitude value can remain the same.

In FIG. 3, a verify operation can be performed after an application of each of signals V_(PGRM1) through V_(PGRM6). In a verify operation, one of the signals V_(RAMP1) through V_(RAMP6) can be applied to the same selected access line to which one of the signals V_(PGRM1) through V_(PGRM6) was applied. For example, signal V_(RAMP1) can be applied to selected access line 216 (FIG. 2) after signal V_(PGRM1) is applied to selected access line 216. Signal V_(RAMP2) can be applied to selected access line 216 after signal V_(PGRM2) is applied to selected access line 216. The number of signals V_(RAMP1) through V_(RAMP6) can be equal to the number of signals V_(PRGM1) through V_(PGRM6) during programming of the selected memory cell.

As shown in FIG. 3, signals V_(RAMP1) through V_(RAMP6) can have the same profile. For example, signals V_(RAMP1) through V_(RAMP6) can have amplitude values increasing in the same direction (e.g., positive slope) with respect to time. As shown in FIG. 3, signals V_(RAMP1) through V_(RAMP6) can have a single ramp shape with values increasing from zero (or negative value) to a positive voltage, for example, approximately six volts (or higher).

When one of signals V_(RAMP1) through V_(RAMP6) is applied to a selected access line during a verify operation, memory device 200 may perform two activities for each memory cell being programmed. One activity can include determining whether the threshold voltage value of the memory cell reaches a value less than (but near) its target threshold voltage. Another activity can include determining whether the threshold voltage value of the memory cell has reached its target threshold voltage. Based on the determining results from these two activities, memory device 200 can further perform additional activities, such as to repeat or finish programming of some or all of selected memory cells.

FIG. 4 shows an example of threshold voltage value ranges 400 through 407 of corresponding threshold voltages VT₀ through VT₇ of memory device 200 of FIG. 2, according to an embodiment of the invention. As described above, memory device 200 can be a multi-level cell memory device. For example, memory device 200 can be a 3-bit per cell memory device. There are eight possible combinations of three bits. FIG. 4 shows eight levels (sometimes called states), level 0 (L0) through level 7 (L7) corresponding to eight different combinations of three bits. Each level has a voltage threshold value range for a corresponding threshold voltage for a large number of memory cells. For example, levels L0 through L7 have respective ranges for values of threshold voltages, labeled threshold voltage VT₀ through VT₇. As shown in FIG. 4, the threshold voltage values of threshold voltages VT₀ through VT₇ goes from a lowest threshold voltage value (corresponding level 0) to a highest threshold voltage value (corresponding to level L7). Thus, the threshold value of threshold voltage VT₇ is greatest among the threshold voltage values of threshold voltages VT₀ through VT₇.

Each of threshold voltages VT₀ through VT₇ can be a target threshold voltage. During a programming operation, a selected memory cell can be programmed to have a target threshold voltage value within the value range of one of threshold voltages VT₀ through VT₇.

As shown in FIG. 4, threshold voltage VT₁ can have threshold voltage value range 401, ranging from a lower limit value Vt_(1A) to a higher limit value Vt_(1B). Threshold voltage VT₂ can have threshold voltage value range 402, ranging from a lower limit value Vt_(2A) to a higher limit value Vt_(2B). Zone 412 is the difference in value between higher limit value Vt_(1B) of voltage value range 401 and lower limit value Vt_(2A) of threshold voltage value range 402. As an example, zone 412 can be approximately 800 millivolts (mV). Other threshold voltages VT₀ and VT₃ through VT₇ can also have corresponding voltage value ranges 400 and 403 through 407. For clarity, FIG. 4 omits the labels for lower and higher limit values associated with ranges 400 and 403 through 407.

FIG. 4 also shows pre-program verify voltage PPV_(i) and program verify voltage PV_(i) where index “i” corresponds to the level number. Each of threshold voltages VT₀ through VT₇ is associated with a pair of verify voltages PPV_(i) and PV_(i). For example, threshold voltage VT₂ is associated with verify voltages PPV₂ and PV₂. Threshold voltage VT₅ is associated with verify voltages PPV₅ and PV₅.

The difference in values between PPV_(i) and PV_(i) (or PV_(i)−PPV_(i)) associated with a particular threshold voltage VT_(i) can be less than one-fourth of the difference between the lower limit value of that threshold voltage VT_(i) and the higher limit value associated with the threshold voltage VT_(i) that is immediately below that particular threshold voltage VT_(i). For example, in FIG. 4, if zone 412 is approximately 800 mV, then PV₂−PPV₂ can be less than 200 mV. Alternatively, the difference in values between PV₂−PPV_(i) can be from at least one-fourth to one-half of the difference between the lower limit value of that level and the higher limit value of the level immediately below that level. For example, in FIG. 4, if zone 412 is approximately 800 mV, then PV₂−PPV₂ and be from 200 mV to 400 mV.

During a verify operation, a selected memory cell can be deemed to have reached a value (e.g., PPV_(i)) less than but near its target threshold voltage value if the threshold voltage value (Vt) during programming of that memory cell is equal to or greater than its associated PPV_(i) (e.g., Vt≧PPV_(i)). A selected memory cell is deemed to have reached its target Vt if the threshold voltage value of that memory cell during programming of that memory cell is equal to or greater than its associated PV_(i) (e.g., Vt≧PV_(i)).

In the description herein, condition Vt≧PPV_(i) refers to a condition of whether the threshold voltage value (Vt) of a particular selected memory cell reaches a value (e.g., PPV_(i)) less than its target threshold voltage value during programming of that memory cell. Condition Vt≧PV_(i), refers to a condition of whether the threshold voltage value of a particular selected memory cell has reached its target threshold voltage value during programming of that memory cell.

FIG. 5 shows graphs illustrating a relationship between values of threshold voltages VT₀ through VT₇ and signal V_(RAMP), according to an embodiment of the invention. Signal V_(RAMP) can correspond to signal V_(RAMP) of FIG. 2 and any one of signals V_(RAMP1) through V_(RAMP6) in FIG. 4. Thus, each of signals V_(RAMP1) through V_(RAMP6) in FIG. 4 can have a profile shown in FIG. 5, such as a single ramp shape with a positive slope.

As shown in FIG. 5, signal V_(RAMP) can include values V1, V2, V3, V4, V5, V6 and V7 equal to voltages PV₁ through PV₇, respectively. The maximum value of V_(RAMP) can be greater than the higher limit of a threshold voltage value range associated with threshold voltage VT₇. V_(RAMP) can be generated based on values of input information (IN).

Information IN can be digital information. Information IN can be generated by components of memory device 200, such as control circuit 116 of FIG. 1. A digital-to-analog converter (DAC) can be used to receive information IN at its input and generate values V1 through V7 of signal V_(RAMP) at its output, based on information IN.

As shown in FIG. 5, information IN can include values (e.g., numbers) generated in a sequential order. For example, information IN can include numbers generated in a sequential order (in decimal number presentation) of 0, 1, 2, 3, 4, 5, 6, 7, . . . , X−3, X−2, X−1, X, X+1, . . . , Y−3, Y−2, Y−1, Y, Y+1, . . . , Z−3, Z−2, Z−1, Z, and Z+1. Only some of the values of information IN are shown in FIG. 5 for clarity. Value Z is greater than value Y, and value Y is greater than value X.

For each value (e.g., digital value) of information IN, a corresponding value (e.g., analog voltage value) of signal V_(RAMP) can be generated. For example, value V1 (voltage value) of signal V_(RAMP) can be generated based on value 6 (e.g., 00000110 in an 8-bit binary number representation) of information IN. In another example, value V2 of signal V_(RAMP) can be generated based on value X (e.g., X=00000110 in binary representation if X=16) of information IN.

As shown in FIG. 5, the value of signal V_(RAMP) corresponding to value X−2 can be less than voltage value PVV₂. The value of signal V_(RAMP) corresponding to value Y−2 can be less than voltage value PVV₅. The value of signal V_(RAMP) corresponding to value Z−2 can be less than voltage value PVV₇.

The value of signal V_(RAMP) corresponding to value X can be equal to voltage value PV₂. The value of signal V_(RAMP) corresponding to value Y can be equal to voltage value PV₅. The value of signal V_(RAMP) corresponding to value Z can be equal to voltage value PV₇.

Each of voltages PPV_(i) can have a value between consecutive values of signal V_(RAMP) that are generated by two consecutive values of information IN. For example, consecutive values X−2 and X−1 of information IN are used to generate two corresponding consecutive values (shown as two dots) of signal V_(RAMP). As shown in FIG. 5, voltage PPV₂ is between these two values of signal V_(RAMP). This means that voltage PPV₂ is greater than a voltage value of signal V_(RAMP) generated by value X−2 of information IN and less than a voltage value of signal V_(RAMP) generated by value X−1 of information IN. In another example, consecutive values Y−2 and Y−1 of information IN are used to generate two corresponding consecutive values (shown as two dots) of signal V_(RAMP). As shown in FIG. 5, voltage PPV₅ is between these two values of signal V_(RAMP). This means that voltage PPV₂ is greater than a voltage value of signal V_(RAMP) generated by value Y−2 of information IN and less than a voltage value of signal V_(RAMP) generated by value Y−1 of information IN. Alternatively, each of voltages PPV_(i) can have a value equal to a value of signal V_(RAMP) that is generated by a corresponding value of information IN. For example, voltage PPV₂ can have a value equal to a value of signal V_(RAMP) generated by value X−2 of information IN.

FIG. 6 is a chart 600 showing a relationship among values of information IN, signal V_(RAMP), voltage PV_(i), and target threshold voltages V_(T0) through VT₇ of FIG. 5, according to an embodiment of the invention. In chart 600, information IN is presented in two different forms, a decimal form and a corresponding binary form. For example, if information IN includes an 8-bit binary number, then its value of zero (in decimal form) corresponds to 00000000, value 1 corresponds to 00000001, value 16 corresponds to 00010000, and so on.

For each value of information IN, chart 600 also shows examples of the corresponding value of voltage PV_(i) (which corresponds to target VT_(i)). For example, as shown in portions 601, 602, 605, and 607, values 00000110, 00010000, 00101110, and 00111000 of information IN can correspond to the values of voltage PV₁ (target VT₁), PV₂ (target VT₂), PV₅ (target VT₅), and PV₇ (target VT₇), respectively.

As described above with reference to FIG. 5, each of voltages PPV_(i) can have a value between consecutive values of signal V_(RAMP) that are generated by two consecutive values of information IN. Chart 600 of FIG. 6 shows an example where voltage PPV₁ has a value of 0.48 volt (V), which is between 0.4V and 0.5V volt of signal V_(RAMP) that are generated by consecutive values 00000100 and 00000101 of information IN. In another example, chart 600 also shows voltage PPV₅ having a value of 4.48V, which is between 4.4V and 4.5V of signal V_(RAMP) that are generated by consecutive values 00101100 and 00101101 of information IN. Values 0.48V, 1.48V, 4.48V, and 5.48V are only examples. Other values for PPV_(i) can be used. For example, in chart 600, voltage PPV₁ can have any value greater than 0.4V and less than 0.5V. Similarly, voltage PPV₂ can have any value greater than 1.4V and less than 1.5V. Voltage PPV₅ can have any value greater than 4.4V and less than 4.5V. Voltage PPV₇ can have any value greater than 5.4V and less than 5.5V.

For the example of chart 600, during a verify operation, if a selected memory cell is programmed to have a target threshold voltage value of PV₂, the selected memory cell is deemed to have reached a value of PPV₂ (e.g., 1.48V) if the threshold voltage value Vt during programming of that memory cell is equal to or greater than 1.48V. The selected memory cell is deemed to have reached its target Vt (e.g., 1.6V) if the threshold voltage value of that memory cell during programming of that memory cell is equal to or greater than 1.6V.

Each of values (in volt unit) V1 through V7 and other values (e.g., positive voltage values Va through Vp) of signal V_(RAMP) can be generated based on a corresponding value of information IN. For example, values V1, V2, V5, and V7 of signal V_(RAMP) can be generated based on corresponding values of information IN, such as values 00000110 (or 6 in decimal form), 00010000 (or X in decimal form), 00101110 (or Y in decimal form), and 00111000 (or Z in decimal form).

As shown in FIG. 6, information IN can have values in an increasing sequential order, such as from 0 to Z+1. The values of signal V_(RAMP) can also have an increasing sequential order, such as from zero volts to 5.7V, corresponding to the same order of that of information IN. The increment from one value to the next value of signal V_(RAMP) can be the same, such as 100 millivolts (or 0.1 volt) or other values.

FIG. 7 shows some activities performed by memory device 200 of FIG. 2 based on the values of information IN of FIG. 5 and FIG. 6 during an example programming of selected memory cells 1, 2, and 3 of a memory device, according to an embodiment of the invention. Memory cells 1, 2, and 3 can be in the same row, such as memory cells 210, 212, and 213 in row 241 of FIG. 2.

In FIG. 7, the values of information IN can be generated one after another at different time intervals in a sequential order during a verify operation. For example, values X−2, X−1, and X can be generated during time intervals 701, 702, and 703, respectively. Values Y−2, Y−1, and Y can be generated during time intervals 711, 712, and 713, respectively. Values Z−2, Z−1, and Z can be generated during time intervals 721, 722, and 723, respectively. Values X, Y, and Z can correspond to three different target threshold voltage values.

As shown in FIG. 7, offset values 731, 732, and 733 are the differences between values X and X−2, between values Y and Y−2, and between values Z and Z−2, respectively. Offset values 731, 732, and 733 can be the same. FIG. 7 shows an example where offset values 731, 732, and 733 are two units (count units) with respect to the sequential unit of information IN. For example, if X=16 then, the sequence shown in FIG. 7 would be 14, 15, 16, and 17 (in decimal number representation) or 00001110, 00001111, 00010000, and 00010001 (in 8-bit binary number representation). Thus, offset 731 is two units (two count units). Similarly, as shown in FIG. 7, each of offset values 732 and 733 is also two units. Other offset value units can be used. For example, offset values 731, 732, and 733 can be one unit or more than two units.

In the example of FIG. 7, memory cells 1, 2, and 3 are programmed to have threshold voltage values Vt₁, Vt₂, and Vt₃, respectively, corresponding to values X, Y, and Z. During the programming operation in this example, memory device 200 determines whether Vt≧PPV_(i) for memory cells 1, 2, and 3 when the values of information IN are X−2, Y−2, and Z−2, respectively, at corresponding time intervals 701, 711, and 721. Memory device 200 also determines whether Vt≧PV_(i) for memory cells 210, 212, and 213 when the values of information IN are X, Y, and Z, respectively, at corresponding time intervals 703, 713, and 723. Based on the determining results from these activities, memory device 200 can further perform additional activities, such as adjusting a programming rate and repeat programming after time interval 723 or finishing the programming of selected memory cells 1, 2, and 3, after time interval 723.

FIG. 8 shows a partial schematic diagram of another portion of memory device 200 of FIG. 2, according to an embodiment of the invention. For simplicity, FIG. 8 omits some elements and some reference labels of memory device 200.

As shown in FIG. 8, memory device 200 can include voltage generators 821 and 822 to generate signals V_(PGRM) and V_(RAMP), respectively. Signal V_(PGRM) in FIG. 8 can include one or more of signals V_(PGRM1) through V_(PGRM6) in FIG. 3. Signal V_(RAMP) in FIG. 8 can include one or more of signals V_(RAMP1) through V_(RAMP6) in FIG. 3.

Voltage generator 821 may include a charge pump to provide signal V_(PGRM), which can have a value greater than the supply voltage (e.g., Vcc) of memory device 200. Voltage generator 822 may include a digital to analog converter (DAC) 823 to generate signal V_(RAMP). DAC 823 may receive information IN in the form of combinations of bits at its input and generate signal V_(RAMP) at its output with values (e.g., analog value) corresponding to the combinations of the bits. Some example values of information IN and signal V_(RAMP) are shown in FIG. 5 and FIG. 6.

Memory device 200 in FIG. 8 can also include a generator 841 to receive information IN and generate information IN1 and information IN2 based on information IN. Generator 841 can include any combination of logic gate elements, counters, or other components. Each of information IN1 and IN2 can be digital information. The relationship among information IN, IN1, and IN2 are described in detail with reference to FIG. 9.

Memory device 200 can also include a target Vt data unit 861 to store information VT_(TGT) corresponding to target threshold voltage values to be programmed into selected memory cells during a particular programming operation.

A comparator 851 of memory device 200 can compare information VT_(TGT) with each of information IN1 and IN2 during a verify operation and provide a comparison result. The value of a signal MATCH can be used to indicate a value of the comparison result. For example, the signal MATCH can have one value (e.g., high, logic one, or other values) when either IN1=VT_(TGT) or IN2=VT_(TGT), the signal MATCH can have another value (e.g., low, logic zero, or other values) when neither IN1=VT_(TGT) nor IN2=VT_(TGT).

A programming controller 805 receives a combination of signal MATCH and signals SEN_OU_(T1), SEN_OU_(T2), and SEN_OU_(T3). Based on this combination, programming controller 805 can determine whether conditions Vt≧PPV_(i) and Vt≧PV_(i) are satisfied when information IN has specific values. These specific values can include values X−2, X, Y−2, Y, Z−2, and Z of information IN.

Programming controller 805 may include storage components, e.g., latches, to store information provided by signal MATCH and signals SEN_OU_(T1), SEN_OU_(T2), and SEN_OU_(T3). Based on the stored information, which includes information associated with conditions Vt≧PPV_(i) and Vt≧PV_(i), memory device 200 may perform further programming activities. For example, memory device 200 may adjust (e.g., decrease) a programming rate and repeat programming of any particular selected memory cell if Vt≧PPV_(i) for that memory cell is satisfied, or finish the programming of (e.g., inhibit) any particular selected memory cell if condition Vt≧PV_(i) for that memory cell is satisfied.

FIG. 9 is a graph showing activities of memory device 200 including determining conditions Vt≧PPV_(i) and Vt≧PV_(i) during some time intervals in an example programming of memory cells 210, 212, and 213 of FIG. 8, according to an embodiment of the invention. As shown in FIG. 9, memory cells 210, 212, and 213 can be programmed to have target threshold voltage values corresponding to values X, Y, and Z of information IN. During an example programming operation associated with FIG. 9, the threshold voltage values of memory cells 210, 212, and 213 are indicated as Vt₂₁₀, Vt₂₁₂, and Vt₂₁₃, respectively. In this example, information VT_(TGT) corresponding to target threshold voltage values stored in target VT data unit 861 (FIG. 8) can include values corresponding to values X, Y, and Z of information IN.

As shown in FIG. 9, each value (e.g., number) of information IN1 can be generated based on a corresponding value (e.g., number) of information IN plus an offset value, such as offset value 731, 732, or 733. For example, if IN=X−2, X−1, X then IN1=X, X+1, X+2. In this example (offset value=2), if X=16, when IN1=X−2=14 (e.g., 00001110), IN=(X−2)+2=X=16 (e.g., 00010000). Similarly, as shown in FIG. 9, if IN=Y−2, Y−1, Y then IN1=Y, Y+1, Y+2. If IN=Z−2, Z−1, Z then IN1=Z, Z+1, Z+2.

The value of information IN2 can be equal to the value of information IN. For example, if IN=X−2, X−1, X then IN2=X−2, X−1, X. In this example, if X=16, when IN=X−2 =14 (e.g., 00001110), IN2=X−2=14 (e.g., 00001110). Similarly, as shown in FIG. 9, if IN=Y−2, Y−1, Y then IN2=Y−2, Y−1, Y. If IN=Z−2, Z−1, Z then IN2=Z−2, Z−1, Z.

Since the value of information IN1 can be equal to the value of information IN plus an offset value (e.g., IN1=IN+offset value) and the value of information IN2 can be equal to the value of information IN (e.g., IN2=IN), the value of information IN1 can also be equal to the value of information IN2 plus the offset value (e.g., IN1=IN2+offset value). For example, as shown in FIG. 9, if IN2=X−2, X−1, X then IN1=X, X+1, X+2. If IN2=Y−2, Y−1, Y then IN1=Y, Y+1, Y+2. If IN2=Z−2, Z−1, Z then IN1=Z, Z+1, Z+2.

Signal MATCH can have signal level values to provide information including three different types of indications. For example, one signal level value (e.g., low) of signal MATCH can be used to indicate an unmatch indications 930. Another signal level value (e.g., high) of signal MATCH can be used to indicate near target match indications 931, 934, or 936 and target match indications 932, 935, or 937.

Memory device 200 may determine whether Vt≧PPV_(i) for respective memory cells 210, 212, and 213 during each occurrence of near target match indications 931, 934, and 936 during time intervals 901, 911, and 921. Memory device 200 may determine whether Vt≧PV_(i) for respective memory cells 210, 212, and 213 during each occurrence of target match indications 932, 935, and 937 during time intervals 903, 923, and 933. For example, as shown in FIG. 9, memory device 200 may determine whether Vt₂₁₀≧PPV_(i) and Vt₂₁₀≧PV_(i) for memory cell 210 during time intervals 901 and 903, respectively, when near target match indication 931 and target match indications 932 occur. Memory device 200 may determine whether Vt₂₁₂≧PPV_(i) and Vt₂₁₂≧PV_(i) for memory cell 212 during time intervals 911 and 913, respectively, when near target match indication 934 and target match indications 935 occur. Memory device 200 may determine whether Vt₂₁₃≧PPV_(i) and Vt₂₁₃≧PV_(i) for memory cell 213 during time intervals 921 and 923, respectively, when near target match indication 936 and target match indications 937 occur.

Memory device 200 may ignore sense result information of respective memory cells 210, 212, and 213 when unmatch indications 930 occur during time intervals 902, 912, and 922. In each of time intervals 901, 902, 903, 911, 912, 913, 921, 922, and 923, memory device 200 may enable (e.g., activate) the sense amplifiers associated with the selected memory cells, such as sense amplifiers 280, 282, and 283 (FIG. 8) associated with selected memory cells 210, 212, and 213. Sense amplifiers 280, 282, and 283, when enabled, perform the sense operation in each of time intervals 901, 902, 903, 911, 912, 913, 921, 922, and 923. However, because of the occurrence of unmatch indications 930 during time intervals 902, 912, and 922, memory device 200 may ignore (e.g., may not store) sense result information obtained during time intervals 902, 912, and 922.

Near target match indications 931, 934, and 936 can be provided based on the value of information IN1. For example, as shown in FIG. 9, signal MATCH provides near target match indications 931, 934, and 936 when the values of information IN1 are X, Y, and Z, respectively.

Target match indications 932, 935, and 937 can be provided based on the value of information IN2. For example, as shown in FIG. 9, signal MATCH provides target match indications 932, 935, and 937 when the values of information IN2 are X, Y, and Z, respectively.

Thus, near target match indications 931, 934, and 936, and target match indications 932, 935, and 937 occur when either the value of information IN1 or the value of information IN2 is equal to the target threshold voltage values X, Y, and Z. At each occurrence of near target match indications 931, 934, and 936, and each occurrence of target match indications 932, 935, and 937, memory device 200 may obtain sense result information 941, 942, 944, 945, 946, and 947 provided by signals SEN_OUT₀, SEN_OUT₂, and SEN_OUT₃, respectively. During a programming operation, programming controller 805 (FIG. 8) may store indications 931, 932, 934, 935, 936 and 937, and sense result information 941, 942, 944, 945, 946, and 947.

Based on the sense result information associated with each of memory cells 210, 212, and 213 and the information provided by signal MATCH, memory device 200 may determine whether conditions Vt≧PPV_(i) and Vt≧PV_(i) are satisfied. For example, during time interval 901, condition Vt≧PPV_(i) associated with memory cell 210 is satisfied if sense result information provided by signal SEN_OUT₀ has one value (e.g., high, logic one, or other value). In this example, condition Vt≧PPV_(i) is unsatisfied if sense result information provided by signal SEN_OUT₀ has another value (e.g., low, logic zero, or other value). In another example, during time interval 903, condition Vt₂₁₀≧PV_(i) associated with memory cell 210 is satisfied if sense result information provided by signal SEN_OUT₀ has one value (e.g., high, logic one, or other value). In this example, condition Vt₂₁₀≧PV_(i) is unsatisfied if sense result information provided by signal SEN_OUT₀ has another value (e.g., low, logic zero, or other value).

In a similar fashion, during interval 911, condition Vt₂₁₂≧PPV_(i) associated with memory cell 212 is satisfied if sense result information provided by signal SEN_OUT₂ has one value (e.g., high, logic one, or other value) and is unsatisfied if sense result information provided by signal SEN_OUT₂ has another value (e.g., low, logic zero, or other value). During time interval 913, condition Vt₂₁₂≧PV_(i) associated with memory cell 212 is satisfied if sense result information provided by signal SEN_OUT₂ has one value and is unsatisfied if sense result information provided by signal SEN_OUT₂ has another value.

During interval 921, condition Vt₂₁₃≧PPV_(i) associated with memory cell 213 is satisfied if sense result information provided by signal SEN_OUT₃ has one value (e.g., high, logic one, or other value) and is unsatisfied if sense result information provided by signal SEN_OUT₃ has another value (e.g., low, logic zero, or other value). During time interval 923, condition Vt₂₁₃≧PV_(i) associated with memory cell 213 is satisfied if sense result information provided by signal SEN_OUT₃ has one value and is unsatisfied if sense result information provided by signal SEN_OUT₃ has another value.

FIG. 10 is a graph showing a first example of signal SEN_OUT₀ and signal V_(BL0) associated with memory cell 210 in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention. As shown in FIG. 10, sense result information 941 and 942 (also shown in FIG. 9) during time intervals 901 and 903, respectively, can have different values. For example, sense result information 941 has a value corresponding to one signal level value 1001 (e.g., high) of signal SEN_OUT₀. Sense result information 942 has a value corresponding to another signal level value 1000 (e.g., low).

FIG. 10 shows an example where signal SEN_OUT₀ has signal level value 1001 during time interval 901, indicating that condition Vt₂₁₀≧PPV_(i) is satisfied. FIG. 10 also shows an example where signal SEN_OUT₀ has signal level value 1000 during time interval 903, indicating that condition Vt₂₁₀≧PV_(i) is unsatisfied.

The signal level values of signal SEN_OUT₀ are based on the signal level values of signal V_(BL0). Sense amplifier 280 (FIG. 8) can operate such that signal level values of signal SEN_OUT₀ follow the signal level values of signal V_(BL0). For example, during time interval 901 in FIG. 10, the signal level value of signal SEN_OUT₀ is high when the signal level value of signal V_(BL0) is high (e.g., value 1011). During time interval 903, the signal level value of signal SEN_OUT₀ is low when the signal level value of signal V_(BL0) is low (e.g., value 1010).

The signal level values of signal V_(BL0) shown in FIG. 10 can depend on an amount of charge (e.g., voltage) on sense line 270 (FIG. 8). The following description refers to FIG. 8 and FIG. 10. At a beginning of the verify operation before time intervals 901, 902, and 903, such as during time interval 900 in FIG. 10, sense line 270 can be charged (e.g., precharged) to a voltage (e.g., Vcc) such that signal V_(BL0) has signal level value 1011. Time interval 900 can be greater than each of time intervals 901, 902, and 903. For simplicity, the time intervals (e.g., 900, 901, 902, and 903) in FIG. 10 and in FIG. 11 through FIG. 14 are not scaled. Time interval 900 can be sufficient to allow sense line 270 to reach the charged voltage (e.g., Vcc) before the sensing operation at time interval 901. Depending on the threshold voltage value Vt₂₁₀of memory cell 210 and the value of signal V_(RAMP) on access line 216 (FIG. 8) during time intervals 901, 902, and 903, sense line 270 may maintain the charge (e.g., at Vcc) or may discharge to line 291 during any of time intervals 901, 902, and 903.

Sense line 270 may maintain the charge if Vt₂₁₀ is greater than the value of signal V_(RAMP) (Vt₂₁₀>V_(RAMP)). For example, if Vt₂₁₀>V_(RAMP), a transistor in memory cell 210 does not turn on (e.g., remain in an off-state). Thus, no signal path (e.g., current path) is formed from sense line 270 to line 291 through memory cell 210. Since no signal is formed, sense line 270 may maintain its charge at substantially the same value (e.g., Vcc).

Sense line 270 may discharge to line 291 if Vt₂₁₀ is equal to or less than the value of signal V_(RAMP) (Vt₂₁₀≦V_(RAMP)) during any of time intervals 901, 902, and 903. For example, if Vt₂₁₀≦V_(RAMP) 901, the transistor in memory cell 210 turns on. Thus, a signal path is formed from sense line 270 to line 291 through memory cell 210. Since a signal path is formed, sense line 270 may discharge to line 291 via the signal path. The discharging may reduce the charge on sense line 270 to zero or near zero.

FIG. 10 shows an example where Vt₂₁₀>V_(RAMP) during time interval 901 and Vt₂₁₀≦V_(RAMP) during time intervals 902 and 903. For example, if Vt₂₁₀=1.48V and V_(RAMP)=1.4V (Vt₂₁₀>V_(RAMP)) during time interval 901, then the transistor in memory cell 210 does not turn on. Thus, during time interval 901, no signal path is formed from sense line 270 to line 291 through memory cell 210. Therefore, the charge on sense line 270 remains at substantially the same value (e.g., Vcc). As shown in FIG. 10, signal V_(BL0) stays the same signal level value 1011 (e.g., high) from time interval 900 to time interval 901, indicating that the charge on sense line 270 remains at substantially the same value when Vt₂₁₀>V_(RAMP). Since signal V_(BL0) has signal level value 1011 (e.g., high), signal SEN_OUT₀ also has a corresponding signal level value 1001 (e.g., high), indicating that condition Vt₂₁₀≧PPV_(i) is satisfied.

In the above example, the value of signal V_(RAMP) may increase from 1.4V during time interval 901 to 1.5V (for example) during time interval 902 and then to 1.6V (for example) during time interval 903. The example values of 1.4V, 1.5V, and 1.6V described here can also correspond to the example values of V_(RAMP) shown in chart 600 of FIG. 6. During time interval 902 in FIG. 10, since Vt₂₁₀≦V_(RAMP) (e.g., Vt₂₁₀=1.4V≦V_(RAMP)=1.5V), the transistor in memory cell 210 turns on. Sense line 270 may discharge to line 291. As shown in FIG. 10, during time interval 902, signal V_(BL0) changes from signal level value 1011 (e.g., high) to signal level value 1010 (e.g., low). This indicates that sense line 270 begins to discharge to line 291 during time interval 902 when Vt₂₁₀≦V_(RAMP). Since signal V_(BL0) changes from signal level value 1011 (e.g., high) to signal level value 1010 (e.g., low) during time interval 902, signal SEN_OUT₀ also changes from signal level value 1001 (e.g., high) to signal level value 1000 (e.g., low) during time interval 902.

During time interval 903, since Vt₂₁₀≦V_(RAMP) (e.g., Vt₂₁₀=1.4V≦V_(RAMP)=1.6V) as indicated in the above example, the transistor in memory cell 210 may remain turned on. Sense line 270 may continue to discharge to line 291 or may come near the end of the discharging. As shown in FIG. 10, during time interval 903, signal V_(BL0) has signal level value 1010 (e.g., low). This indicates that sense line 270 has been discharged to line 291 during time interval 903 when Vt₂₁₀≦V_(RAMP). Since signal V_(BL0) has signal level value 1010 (e.g., low) during time interval 903, signal SEN_OUT₀ also has a corresponding signal level value 1000 (e.g., low), indicating that condition Vt₂₁₀≧PV_(i) is unsatisfied.

In the example of FIG. 10, memory device 200 repeats the programming of memory cell 210 because condition Vt₂₁₀≧PV_(i) is unsatisfied. In this example, since condition Vt₂₁₀≧PPV_(i) is satisfied, indicating that the threshold voltage value of memory cell 210 is near the target threshold voltage value (e.g., PV₂), memory device 200 may adjust a programming rate at which memory cell 210 is programmed during a repeat of the programming of memory cell 210 to move it toward the target threshold voltage value. Adjusting such a programming rate may avoid over-programming of memory cell 210. For example, memory device 200 may adjust the programming rate by, for example, adjusting a voltage value applied to sense line 270 associated with memory cell 210 during the repeat of the programming of memory cell 210.

Adjusting such a voltage value can include increasing the voltage value applied to sense line 270. Increasing the voltage value applied to sense line 270 can include increasing from zero to a positive voltage value (e.g., 500 mV). For example, zero volts can be applied to sense line 270 during programming of memory cell 210 with a preceding programming pulse (e.g., V_(PGRM2) in FIG. 3) when condition Vt₂₁₀≧PV_(i) is unsatisfied. In this example, the positive voltage value can be applied to sense line 270 during programming of memory cell 210 with a succeeding programming pulse (e.g., V_(PGRM3) in FIG. 3) when condition Vt₂₁₀≧PV_(i) is satisfied. Increasing the voltage value applied to sense line 270 can alternatively include increasing the voltage value from a lower positive value (e.g., when V_(PGRM2) in FIG. 3 is used) to a higher positive value (e.g., when V_(PGRM3) in FIG. 3 is used during the repeat of the programming).

In an alternative programming operation, adjusting a voltage value applied to sense line 270 can include decreasing the voltage value applied to sense line 270 during a repeat of the programming of memory cell 210. For example, decreasing the voltage value applied to sense line 270 can include decreasing the voltage value from a positive voltage value to zero. For example, the positive voltage value can be applied to sense line 270 during programming of memory cell 210 with a preceding programming pulse (e.g., V_(PGRM2) in FIG. 3) when condition Vt₂₁₀≧PV_(i) is unsatisfied. In this example, zero volts can be applied to sense line 270 during programming of memory cell 210 with a succeeding programming pulse (e.g., V_(PGRM3) in FIG. 3) when condition Vt₂₁₀≧PV_(i) is unsatisfied. Decreasing the voltage value applied to sense line 270 can alternatively include decreasing the voltage value from a higher positive value (e.g., when V_(PGRM2) in FIG. 3 is used) to a lower positive value (e.g., when V_(PGRM3) in FIG. 3 is used during the repeat of the programming). In some cases, decreasing the voltage value applied to sense line 270 can be performed when only memory cell 210 has not reached its target threshold voltage value while other memory cells in the same row (e.g., row 241 in FIG. 2) have reached their respective target threshold voltage values.

FIG. 11 is a graph showing a second example of signal SEN_OUT₀ and signal V_(BL0) associated with memory cell 210 in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention. As shown in FIG. 11, signal SEN_OUT₀ has signal level value 1000 during time interval 901, indicating that condition Vt₂₁₀≧PPV_(i) is unsatisfied. FIG. 11 also shows that signal SEN_OUT₀ has signal level value 1000 during time interval 903, indicating that condition Vt₂₁₀≧PV_(i) is unsatisfied.

In this example, during time intervals 901, 902, and 903, Vt₂₁₀≦V_(RAMP). Sense line 270 (FIG. 8) discharges to line 291. Thus, as shown in FIG.11, signal V_(BL0) has signal level value 1010 (e.g., low) during time intervals 901, 902, and 903. Therefore, signal SEN_OUT₀ also has a corresponding signal level value 1000 (e.g., low) during time intervals 901, 902, and 903. This indicates that condition Vt₂₁₀≧PPV_(i) is unsatisfied during time interval 901 and condition Vt₂₁₀≧PV_(i) is unsatisfied during time interval 903.

In the example of FIG. 11, memory device 200 repeats the programming of memory cell 210 because condition Vt₂₁₀≧PV_(i) is unsatisfied. In this example, since condition Vt₂₁₀≧PPV_(i) is also unsatisfied, indicating that the threshold voltage value of memory cell 210 is not near the target threshold voltage value (e.g., PV₂), memory device 200 may not adjust the programming rate, such as by keeping a voltage value applied to sense line 270 line associated with memory cell 210 unchanged when the programming of memory cell 210 is repeated. For example, during a repeat of the programming associated with a succeeding programming pulse (e.g., V_(PGRM3) in FIG. 3), memory device 200 may keep the voltage value applied to sense line 270 at the same value (e.g., at zero or at a positive value) that was used during a programming associated with a preceding programming pulse (e.g., V_(PGRM2) in FIG. 3).

FIG. 12 is a graph showing a third example of signal SEN_OUT₀ and signal V_(BL0) associated with memory cell 210 in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention. As shown in FIG. 12, signal SEN_OUT₀ has signal level value 1001 during time interval 901, indicating that condition Vt₂₁₀≧PPV_(i) is satisfied. FIG. 12 also shows that signal SEN_OUT₀ has signal level value 1001 during time interval 903, indicating that condition Vt₂₁₀≧PV_(i) is also satisfied.

In this example, during time intervals 901, 902, and 903, Vt_(210 l >V) _(RAMP). Sense line 270 (FIG. 8) maintains its charge during time intervals 901, 902, and 903. Thus, as shown in FIG. 11, signal V_(BL0) has signal level value 1001 (e.g., high) during time intervals 901, 902, and 903. Therefore, signal SEN_OUT₀ also has a corresponding signal level value 1001 (e.g., high) during time intervals 901, 902, and 903. This indicates that condition Vt₂₁₀≧PPV_(i) is satisfied during time interval 901 and condition Vt₂₁₀≧PV_(i) is satisfied during time interval 903.

In the example of FIG. 12, memory device 200 may finish programming of memory cell 210 because condition Vt₂₁₀≧PV_(i) is satisfied. In this example, memory device 200 may finish programming of memory cell 210 by, for example, applying an inhibit voltage value to sense line 270 line associated with memory cell 210. The inhibit voltage can have a value sufficient to prevent further programming of memory cell 210 even if other selected memory cells (212 and 213) in the same row of memory cell 210 have not reached their respective target threshold voltage values. For example, the inhibit voltage value can have a value equal to the value of the supply voltage (e.g., Vcc) of memory device 200. Memory device 200 may continue (e.g., repeat) programming of other memory cells, such as memory cells 212 and 213 if they have not reached their respective target threshold voltage values.

FIG. 13 is a graph showing an example of signal SEN_OUT₂ and signal V_(BL2) associated with memory cell 212 in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention. The example associated with FIG. 13 is similar to that of FIG. 10. As shown in FIG. 13, signal SEN_OUT₂ has signal level value 1301 during time interval 911, indicating that condition Vt₂₁₂≧PPV_(i) is satisfied. FIG. 13 also shows that signal SEN_OUT₂ has signal level value 1300 during time interval 913, indicating that condition Vt₂₁₂≧PV_(i) is unsatisfied.

The signal level values of signal SEN_OUT₂ are based on the signal level values of signal V_(BL2). Sense amplifier 282 (FIG. 8) can operate such that signal level values of signal SEN_OUT₂ follow the signal level values of signal V_(BL2). For example, during time interval 911, the signal level value of signal SEN_OUT₂ is high when the signal level value of signal V_(BL2) is high (e.g., value 1311). During time interval 913, the signal level value of signal SEN_OUT₂ is low when the signal level value of signal V_(BL2) is low (e.g., value 1310).

FIG. 13 shows an example where Vt₂₁₂>V_(RAMP) during time interval 911 and Vt₂₁₂≦V_(RAMP) during time intervals 912 and 913. In this example, during time interval 900, sense line 272 (FIG. 8) can be charged (e.g., precharged) to a voltage (e.g., Vcc) such that signal V_(BL2) has signal level value 1311. Since Vt₂₁₂>V_(RAMP) during time interval 911 and Vt₂₁₂≦V_(RAMP) during time intervals 912 and 913, sense line 272 maintains its charge during time interval 911 and discharges during time intervals 912 and 913. Thus, as shown in FIG. 13, signal V_(BL2) has signal level value 1311 (e.g., high) during time interval 911 and signal level value 1310 (e.g., low) during time intervals 912 and 913. Therefore, signal SEN_OUT₂ also has a corresponding signal level value 1301 (e.g., high) during time interval 911 and a corresponding signal level value 1300 (e.g., low) during time intervals 912 and 913. This indicates that condition Vt₂₁₂ ≧PPV_(i) is satisfied during time interval 911 and condition Vt₂₁₂≧PV_(i) is unsatisfied during time interval 913.

In the example of FIG. 13, memory device 200 repeats the programming of memory cell 212 because condition Vt₂₁₂≧PV_(i) is unsatisfied. In this example, since condition Vt₂₁₂≧PPV_(i) is satisfied, indicating that the threshold voltage value of memory cell 212 is near the target threshold voltage value (e.g., PV₅), memory device 200 may adjust a voltage value applied to sense line 272 associated with memory cell 212 during the repeat of the programming of memory cell 212. Adjusting such a voltage value may avoid over-programming of memory cell 212. Memory device 200 may adjust (e.g., increase or decrease) the voltage value applied to sense line 272 in ways similar to or identical to those described above for memory cell 210 with reference to FIG. 10.

FIG. 14 is a graph showing an example of signal SEN_OUT₃ and signal V_(BL3) associated with memory cell 213 in the example programming operation described with reference to FIG. 9, according to an embodiment of the invention. The example associated with FIG. 14 is similar to those of FIG. 10 and FIG. 13. As shown in FIG. 14, signal SEN_OUT₃ has signal level value 1401 during time interval 921, indicating that condition Vt₂₁₃≧PPV_(i) is satisfied. FIG. 14 also shows that signal SEN_OUT₃ has signal level value 1400 during time interval 923, indicating that condition Vt₂₁₃≧PV_(i) is unsatisfied.

The signal level values of signal SEN_OUT₃ are based on the signal level values of signal V_(BL3). Sense amplifier 283 (FIG. 8) can operate such that signal level values of signal SEN_OUT₃ follow the signal level values of signal V_(BL3). For example, during time interval 921, the signal level value of signal SEN_OUT₃ is high when the signal level value of signal V_(BL3) is high (e.g., value 1411). During time interval 923, the signal level value of signal SEN_OUT₃ is low when the signal level value of signal V_(BL3) is low (e.g., value 1410).

FIG. 14 shows an example where Vt₂₁₃>V_(RAMP) during time interval 921 and Vt₂₁₃≦V_(RAMP) during time intervals 922 and 923. In this example, during time interval 900, sense line 273 (FIG. 8) can be charged (e.g., precharged) to a voltage (e.g., Vcc) such that signal V_(BL3) has signal level value 1411. Since Vt₂₁₃>V_(RAMP) during time interval 921 and Vt₂₁₃≦V_(RAMP) during time intervals 922 and 923, sense line 273 maintains its charge during time interval 921 and discharges during time intervals 922 and 923. Thus, as shown in FIG. 14, signal V_(BL3) has signal level value 1411 (e.g., high) during time interval 921 and signal level value 1410 (e.g., low) during time intervals 922 and 923. Therefore, signal SEN_OUT₃ also has a corresponding signal level value 1401 (e.g., high) during time interval 921 and a corresponding signal level value 1400 (e.g., low) during time intervals 922 and 923. This indicates that condition Vt₂₁₃≧PPV_(i) is satisfied during time interval 921 and condition Vt₂₁₃≧PV_(i) is unsatisfied during time interval 923.

In the example of FIG. 14, memory device 200 repeats the programming of memory cell 213 because condition Vt₂₁₃≧PV_(i) is unsatisfied. In this example, since condition Vt₂₁₃≧PPV_(i) is satisfied, indicating that the threshold voltage value of memory cell 213 is near the target threshold voltage value (e.g., PV₇), memory device 200 may adjust a voltage value applied to sense line 273 associated with memory cell 213 during the repeat of the programming of memory cell 213. Adjusting such a voltage value may avoid over-programming of memory cell 213. Memory device 200 may adjust (e.g., increase or decrease) the voltage value applied to sense line 273 in ways similar to or identical to those described above for memory cell 210 with reference to FIG. 10.

FIG. 15 is a graph showing activities of memory device 200 including determining conditions Vt≧PPV_(i) and Vt≧PV_(i) during some time intervals in another example programming of memory cells 210, 212, and 213 of FIG. 7, according to an embodiment of the invention. FIG. 15 is different from FIG. 9 in that, in FIG. 15, both memory cells 210 and 212 are programmed to have the same target threshold voltage value corresponding to values X. Thus, as shown in FIG. 15, when match indication 931 occurs during time interval 1501 (IN1=X), memory device 200 determines whether Vt₂₁₀≧PPV_(i) and Vt₂₁₂≧PPV_(i) for memory cells 210 and 212, respectively. Also as shown in FIG. 15, when match indication 932 occurs during time interval 1503 (IN1=X), memory device 200 determines whether Vt₂₁₀≧PV_(i) and Vt₂₁₂≧PV_(i) for memory cells 210 and 212, respectively, the same value X of information IN2.

Memory device 200 determines whether Vt₂₁₃≧PPV_(i) and Vt₂₁₃≧PV_(i) for memory cell 213 during time intervals 1521 and 1523, respectively, when match indications 936 and 937 occur. Memory device 200 may ignore sense information results when unmatch indications 930 occur at time intervals 1502 and 1522.

Sense result information 1541, 1542, 1544, 1545, 1546, and 1547 can be stored for further activities performed by memory device 200, such as finishing the programming or adjusting a programming rate and repeat programming of some or all of selected memory cells, as described in detail above with reference to FIG. 2 to FIG. 14.

FIG. 16 shows a flow diagram for a method 1600 of a programming operation in a memory device, according to an embodiment of the invention. Method 1600 can be used to program memory cells of a memory device (e.g., memory device 100 or 200) described above with reference to FIG. 1 through FIG. 15. Thus, method 1600 may include activities and programming operations described above with reference to FIG. 2 through FIG. 15.

As shown in FIG. 16, activity 1610 can include programming a memory cell. Activity 1620 can include determining the threshold voltage value of the memory cell. Determining the threshold voltage value can include determining whether Vt≧PPV_(i) and Vt≧PV_(i) for the memory cell. Method 1600 may determining whether Vt≧PPV_(i) and Vt≧PV_(i) based on different values of digital information (e.g., information IN) that is used to generate a signal (e.g., V_(RAMP)) applied to an access line of the memory cell during the determining of conditions Vt≧PPV_(i) and Vt≧PV_(i).

Method 1600 may include activity 1630 to determine whether Vt≧PPV_(i) and activity 1640 to determine whether Vt≧PV_(i). If both of these conditions are satisfied, method 1600 may finish programming the memory cell at activity 1650. If condition Vt≧PPV_(i) is satisfied in activity 1630 and condition Vt≧PV_(i) is unsatisfied (e.g., PPV_(i)≦Vt≦PV_(i)) in activity 1640, method 1600 may perform activity 1660 to adjust a programming rate. For example, method 1600 may adjust a voltage applied to a sense line associated with the memory cell when method 1600 repeats programming the memory cell at activity 1670. In activity 1630, if condition Vt≧PPV_(i) is unsatisfied, method 1600 may also perform activity 1670 to repeat programming of the memory cell at activity 1670, without performing activity 1660. Method 1600 may repeat one or more of activities 1620, 1630, 1640, 1650, 1660, and 1670 until condition Vt≧PV_(i) is satisfied.

Other memory cells of the memory device used in method 1600 can be programmed in similar or identical ways, as described here with reference to FIG. 16. Method 1600 can include additional activities and programming operations described above with reference to FIG. 2 through FIG. 15.

The illustrations of apparatus (e.g., memory devices 100 and 200) are intended to provide a general understanding of the structure of various embodiments and are not intended to provide a complete description of all the elements and features of apparatus and systems that might make use of the structures described herein.

Any of the components described above can be implemented in a number of ways, including simulation via software. Thus, apparatus (e.g., a portion of memory device 100 or the entire memory device 100, and a portion of memory device 200 or the entire memory device 200) described above may all be characterized as “modules” (or “module”) herein. Such modules may include hardware circuitry, single and/or multi-processor circuits, memory circuits, software program modules and objects and/or firmware, and combinations thereof, as desired by the architect of the apparatus (e.g., memory devices 100 and 200) and as appropriate for particular implementations of various embodiments. For example, such modules may be included in a system operation simulation package, such as a software electrical signal simulation package, a power usage and ranges simulation package, a capacitance-inductance simulation package, a power/heat dissipation simulation package, a signal transmission-reception simulation package, and/or a combination of software and hardware used to operate or simulate the operation of various potential embodiments.

The apparatus and systems of various embodiments may include or be included in electronic circuitry used in high-speed computers, communication and signal processing circuitry, single or multi-processor modules, single or multiple embedded processors, multi-core processors, data switches, and application-specific modules including multilayer, multi-chip modules. Such apparatus and systems may further be included as sub-components within a variety of electronic systems, such as televisions, cellular telephones, personal computers (e.g., laptop computers, desktop computers, handheld computers, tablet computers, etc.), workstations, radios, video players, audio players (e.g., MP3 (Motion Picture Experts Group, Audio Layer 3) players), vehicles, medical devices (e.g., heart monitor, blood pressure monitor, etc.), set top boxes, and others.

The embodiments described above with reference to FIG. 1 through FIG. 16 include memory devices and methods of programming memory cells of the memory device. One such method can include applying a signal to a line associated with a memory cell, the signal being generated based on digital information. The method can also include determining whether a threshold voltage value of the memory cell reaches a first voltage value and a second value based on the values of the digital information and while the signal is applied to the line. Other embodiments including additional memory devices and methods are described.

The above description and the drawings illustrate some embodiments of the invention to enable those skilled in the art to practice the embodiments of the invention. Other embodiments may incorporate structural, logical, electrical, process, and other changes. Examples merely typify possible variations. Portions and features of some embodiments may be included in, or substituted for, those of others. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. 

What is claimed is:
 1. An apparatus comprising: a memory cell; and a module to: apply a signal to an access line associated with the memory cell, the signal being generated based on digital information; determine whether the memory cell is near a target state when the digital information has a first value; and determine whether the memory cell has reached the target state when the digital information has a second value.
 2. The apparatus of claim 1, wherein the module is configured to adjust a programming rate of the memory cell if the memory cell is near a target state.
 3. The apparatus of claim 1, wherein the module is configured to finish programming of the memory cell if the memory cell has reached the target state.
 4. The apparatus of claim 1, wherein the module is configured to increase the programming rate of the memory cell if the memory cell is not near the target state and has not reached the target state.
 5. The apparatus of claim 1, wherein the module is configured to apply a positive voltage to a sense line associated with the memory cell during a programming of the memory cell if the memory cell is near the target state.
 6. The apparatus of claim 1, wherein the module is configured to charge a line coupled to the memory cell before determining whether the memory cell is near the target state and before determining whether the memory cell has reached the target threshold state.
 7. The apparatus of claim 6, wherein the module is configured to: sense a signal level value on the line during a first time interval after the line is charged to determine whether the memory cell is near the target state; and sense the signal level value on the line during a second time interval after the line is charged to determine whether the memory cell has reached the target state.
 8. The apparatus of claim 1, wherein the module is configured to determine whether a threshold voltage value of the memory cell has reached a first voltage value when the module determines whether the memory cell is near the target state, and determine whether the threshold voltage value of the memory cell has reached a second voltage value when the module determines whether the memory cell has reached the target state, and the second voltage value is greater than the first voltage value.
 9. The apparatus of claim 8, wherein the second value of the digital information corresponds to the second voltage value.
 10. The apparatus of claim 8, wherein the signal includes a value generated based on the first value of the digital information, and the value of the signal is less than the first voltage value.
 11. A method comprising: generating first information; generating second information; determining whether a memory cell is near a target state when a value of the first information corresponds to the target threshold voltage value; and determining whether the memory cell has reached the target state when a value of the second information corresponds to the target threshold voltage value.
 12. The method of claim 11, wherein determining whether a memory cell is near a target state comprises determining whether a threshold voltage value of the memory cell has reached a value near the target threshold voltage value of the memory cell, and wherein determining whether the memory cell has reached the target state comprises determining whether the threshold voltage value of the memory cell has reached the target threshold voltage value.
 13. The method of claim 11, wherein the first information has a first value during a first time interval and a second value during a second time interval, the second information has a first value during the first time interval and a second value during the second time interval, and the first value of the first information is equal to the second value of the second information.
 14. The method of claim 12, wherein the first information and the second information are generated based on a same input information.
 15. The method of claim 14, wherein determining whether the threshold voltage value of the memory cell has reached the value near the target threshold voltage value and determining whether the threshold voltage value of the memory cell has reached the target threshold voltage value are performed while a signal generated based on the input information is applied to an access line associated with the memory cell.
 16. A method comprising: applying a signal to a line associated with a first memory cell and a second memory cell, the signal being generated based on input information; determining whether a threshold voltage value of a first memory cell reaches a value near a first target threshold voltage value when the input information has a first value and while the signal is applied to the line; determining whether the threshold voltage value of the first memory cell reaches the first target threshold voltage value when the input information has a second value and while the signal is applied to the line; determining whether a threshold voltage value of the second memory cell reaches a value near a second target threshold voltage value when the input information has a third value and while the signal is applied to the line; and determining whether the threshold voltage value of the second memory cell reaches the second target threshold voltage value when the input information has a fourth value and while the signal is applied to the line.
 17. The method of claim 16, wherein the first target threshold voltage value is different from the second target threshold voltage value.
 18. The method of claim 16, wherein the first value of the input information is less than the second value of the input information.
 19. The method of claim 16, wherein the second value of the input information is less than the third value of the input information.
 20. The method of claim 16, wherein the third value of the input information is less than the fourth value of the input information. 